package com.example.a08;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * Spring中的Scope
 */
@SpringBootApplication
public class A08Application {

    /*
        singleton, prototype, request, session, application

        jdk >= 9 如果反射调用 jdk 中方法 IllegalAccessException
        jdk <= 8 不会有问题

        演示 request, session, application 作用域
        打开不同的浏览器，刷新 http:localhost:8080/test 即可查看效果
        如果 jdk > 8，运行时请添加 --add-opens java.base/java.lang=ALL-UNNAMED
     */

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(A08Application.class, args);
    }

    /*
        小结:
            a. 有几种 scope
                b. 在 singleton 中使用其它几种 scope 的方法
                c. 其它 scope 的销毁
                    1. 可以将通过 server.servlet.session.timeout=10s 观察 session bean 的销毁
                    2. ServletContextScope 销毁机制疑似实现有误
     */
}
